package com.caipos.akka;

import akka.actor.AbstractActor;
import akka.actor.Props;
import com.caipos.entity.DeviceData;
import com.caipos.service.DeviceDataService;

/**
 * 数据处理Actor，负责设备数据的存储和处理
 */
public class DataProcessingActor extends AbstractActor {

    // 数据服务（通过Spring上下文获取）
    private final DeviceDataService dataService;

    /**
     * 构造函数，获取Spring服务
     */
    public DataProcessingActor() {
        // 此时上下文已初始化完成
        this.dataService = SpringContextHolder.getBean(DeviceDataService.class);
    }

    /**
     * 创建Props
     */
    public static Props props() {
        return Props.create(DataProcessingActor.class, DataProcessingActor::new);
    }

    /**
     * 消息处理逻辑
     */
    @Override
    public Receive createReceive() {
        return receiveBuilder()
                .match(DeviceManagerActor.DeviceDataMessage.class, this::processDeviceData)
                .build();
    }

    /**
     * 处理设备数据并存储
     */
    private void processDeviceData(DeviceManagerActor.DeviceDataMessage message) {
        DeviceData data = message.getData();
        // 可以在这里添加数据处理逻辑（如格式转换、过滤等）
        dataService.saveDeviceData(data);
    }
}
    